Mirko Hillert: Zurzeit ist die Version 2.5 auf dem Markt. Was hat sich bei TypeScript in den letzten Versionen geändert?
Philipp Burgmer: Mit TypeScript 2.0, das jetzt bereits eine Weile draußen ist, änderte sich noch einmal relativ viel, was das Handling von Typen von externen Bibliotheken anging. Seit TypeScript 2.1 bis 2.5 sind hauptsächlich kleinere Features hinzugekommen. Diese haben das Typsystem, das ohnehin schon ziemlich gut ist, an vielen Ecken abgerundet und erweitert. Man hat nun mehr Möglichkeiten, auch komplexere Fälle abzudecken, und das Ganze fühlt sich nun auch wirklich aus einem Guss an.
Mirko Hillert: Für Angular war ursprünglich ECMAScript 5 bzw. 6 und TypeScript vorgesehen. Warum hat sich TypeScript durchgesetzt?
Philipp Burgmer: Es ist weiterhin theoretisch möglich sowohl ECMAScript 5 als auch ECMAScript 6 zu verwenden. Meiner Erfahrung nach macht das aber so gut wie niemand. Wenn ich in Projekten oder bei Kunden unterwegs bin, setzen die Leute auf TypeScript ,und das ist der De-facto-Standard geworden. Gut zu beobachten ist das anhand der Angular-Dokumentation. Zunächst war eigentlich vorgesehen, das Ganze auch für ECMAScript 5 und für ECMAScript 6 zu dokumentieren – etwas, das das Angular-Team gar nicht mehr gemacht hat.
Es gibt also eigentlich nur die Dokumentation für TypeScript. Das zeigt also, dass das nicht nur mein persönlicher Eindruck ist, sondern es auf dem Markt auch tatsächlich so angenommen wurde. Meiner Meinung nach lag das stark daran, dass TypeScript eine sehr niedrige Einstiegshürde hat. Bei Angular ist das nicht unbedingt der Fall, hier ist die Einstiegshürde ein wenig höher. Bei TypeScript kommt man jedoch ganz gut rein. Die Features müssen hier nicht von Anfang an verwendet werden, sondern man kann peu à peu beginnen. Es wird zunächst erstmal wie gewohnt ein normales ECMAScript geschrieben, und dann kann begonnen werden, das Typ- oder das Modulsystem mit einzubeziehen. Das Schöne an TypeScript ist, dass alle Features optional sind. Jeder kann für sich selbst entscheiden, was er nutzen möchte und was nicht.
Mirko Hillert: Würdest du empfehlen, sich beim Einstieg in dieses Thema selbst vor die Dokumentation zu setzen und dort loszulegen, da es relativ leicht zu lernen ist? Oder macht ein Workshop an der Stelle mehr Sinn?
Philipp Burgmer: Ein Workshop macht hier schon Sinn. Hier wird alles etwas kompakter aufbereitet, sodass man sich durch nicht so viel Text wühlen muss. Die Dokumentation von TypeScript an sich ist ziemlich gut. Microsoft selber stellt auf der TypeScript-Seite eine Dokumentation zur Verfügung, die recht ansehlich ist. Zudem gibt es ein Deep Dive Book, das frei verfügbar ist und womit man direkt gut loslegen kann.
Bei TypeScript steckt noch Potenzial in den kleinen Details.
Doch gerade wenn es jetzt darum geht, ein Team von mehreren Entwicklern schnell in das Thema einzuführen, dann ist jedoch ein Workshop sinnvoller. Es können Rückfragen gestellt werden und es ist jemand vor Ort, der direkt auf die Fragen eingehen kann. Man muss nicht lange herumsuchen, und das Know-how kann so auch direkt an mehrere Leute auf einmal weitergegeben werden.
Mirko Hillert: Wo siehst du das Verbesserungspotenzial vom derzeitigen TypeScript-Release 2.5?
Philipp Burgmer: Ich glaube, dass weiterhin Potenzial in den kleinen Details steckt, also dem, was sie in den letzten Versionen schon gemacht haben. Dort ist noch ein wenig Luft nach oben. Ich hätte eins, zwei konkrete Featurewünsche, die ich vielleicht auch noch an das Team herantragen werde.
Mirko Hillert: Möchtest du uns diese verraten?
Philipp Burgmer: Eins ist ganz konkret. Ich würde mir wünschen, dass man Properties direkt referenzieren kann. In anderen Sprachen kann man das auch mit einer Doppelpunkt-doppelter-Doppelpunkt-Schreibweise, sodass man direkt eine Property referenzieren kann. Mich stört zudem, dass man an manchen Stellen hartcodierte Strings hat, wo der Property Name drin steht. Ein Ziel von TypeScript ist schließlich, dass über die statische Typisierung und die Möglichkeit, alles statisch analysieren zu können, auch Refactorings in der Idee viel besser unterstützt werden.
Genau das ist der große Vorteil von TypeScript gegenüber ECMAScript. Der ganze Tooling-Support ist viel besser. Man befindet sich eher auf dem Niveau vom Tooling, das man von Java oder Ähnlichem schon seit Jahren gewöhnt ist und wo das Refactoring wirklich gut funktioniert. Bei den Refactorings würde ich mir wünschen, dass wenn ich eine Property umbenenne, ein String, der an irgendeiner Stelle steht und der diesen Namen quasi widerspiegelt, nicht direkt mit geändert wird. Da sehe ich noch Potenzial. Aber das ist eine kleine Stelle, die nur ein paar Randfälle betrifft. Dennoch würde ich nicht sagen, dass sich die Sprache hier nicht rund anfühlt oder man wegen dieses Problems nicht auf die Sprache setzen sollte.
Also insgesamt fühlt sich TypeScript für mich schon sehr rund an und es ist für einen Produktiveinsatz sehr gut geeignet. Insofern habe ich persönlich wenige Bedürfnisse, an der Sprache groß etwas zu ändern, und ich würde nicht behaupten, dass mir hier noch eine ganze Hand voll Sachen fehlen, die ich für essenziell halte.
Mirko Hillert: Du bist als Berater sehr viel bei den Kunden vor Ort. Wo siehst du die Vorteile von Angular beziehungsweise in welchen Projekten würdest du Angular eher nicht verwenden?
Philipp Burgmer: Vorteil ist aus meiner Sicht ganz klar die Skalierbarkeit. Das kann man auf verschiedene Aspekte herunterbrechen. Das Projekt wird schlichtweg größer und man hat einfach viel Code, egal, ob dieser von einem großen oder einem kleinen Team erzeugt wurde. Skalierung kann aber auch auf die Größe des Teams bezogen werden und darauf, dass viele Entwickler gleichzeitig daran arbeiten. Das war ein großes Problem bei AngularJS. Dort wurden die Anwendungen noch rein in ECMAScript 5 ohne Modulsystem und Typisierung entwickelt. Da waren gerade solche Skalierbarkeiten eher schlecht.
Genau an diesem Punkt sehe ich bei Angular den großen Vorteil. Wenn man in einem größeren Team arbeitet und es sich um eine wirklich große Codebasis handelt, würde ich auf jeden Fall auf Angular setzen.
Wir haben die Erfahrung gemacht, dass es nicht besonders für Webseitenentwickelung geeignet ist. Man sollte also schon zwischen Webanwendung und Webseite unterscheiden. Das hatten wir auch gestern im Speaker Panel recht ausführlich besprochen. Dass es unglaublich wichtig ist, das richtige Tool für den richtigen Anlass zu wählen. Ich denke, dass Angular für eine einfache Webseite dann doch nicht das richtige Tool ist.
Mirko Hillert: Ich bedanke mich für das Interview, Philipp!
Interviewt von: Mirko Hillert
Mirko Hillert verantwortet seit 2007 als Leiter der Entwickler Akademie den Trainingsbereich bei Software & Support Media. Er studierte Betriebswirtschaft an der Westsächsischen Hochschule Zwickau und der Universidad Valencia sowie Marketing an der Westfälischen Wilhelms-Universität Münster. Als ehemaliger Dozent und Ausbilder für Managementprozesse treibt er seit vielen Jahren die fundierte Aus- und Weiterbildung von Entwicklern und Softwarearchitekten im IT-Markt voran, unter anderem mit innovativen Eventformaten und hochwertigen Trainingsinhalten.